草庐IT

c++ - 虚拟的概念

全部标签

c++ - 如何创建文件路径可以像磁盘一样访问的虚拟文件系统

我需要在内存或磁盘上创建FileSystem类型的东西,它可以像磁盘上的文件一样访问,它的路径可以在fopen()等函数中使用。详细信息:我正在使用AddFontResourceEx函数在应用程序中加载字体。由于此功能需要文件路径,因此文件需要存在于磁盘上。但我要求用户不能访问/查看字体文件。我尝试了AddFontMemResourceEx函数,但加载的字体不可枚举,因此用户无法在应用程序中看到字体。我也尝试过一些创建VFS的库,但它们像数据库一样工作,即你可以创建文件/目录并访问它们。但不能在AddFontResourceEx或任何其他函数中使用它们的文件路径。是否存在某种方法可以让

c - 设置边界保护数组

我想分配一个数组并对其进行设置,使其前后的页面都受到内存管理单元的保护,因此会自动捕获超出数组边界的尝试;然后捕获它以便以受控方式处理错误。我怀疑是否会有可移植的解决方案,但是分别在Windows上使用MicrosoftC和在Linux上使用GCC的最佳平台特定方法是什么? 最佳答案 实际上,有一种可移植的方法可以检测软件中的内存分配溢出。Dmalloc提供fencepost覆盖检测Fence-postmemoryistheareaimmediatelyaboveorbelowmemoryallocations.Itisalltoo

c - 如何将 _spawnvpe() 与自定义 PATH 值一起使用?

我在(http://stackoverflow.com/questions/10969488/why-does-windows-spawn-process-sometimes-trigger-error-status-sxs-assembly-not-f)中问了一个相关问题但我担心它会被问题的复杂性弄糊涂,所以,这是一个非常简单的版本:下面是一个调用_spawnvpe的例子,手动传递PATH值。这是行不通的。它出错并且不会运行记事本。更改为_spawnv或不传递PATH值使其工作。但是,_putenv的文档清楚地说明了env值的格式是KEY=VALUE。如何让它发挥作用?请具体说明,并

windows - Azure 虚拟机 (Windows) 的最佳工作流程是什么?

我正在使用MongoDB数据库开发Socket.IO应用程序。由于各种原因,我正在开发在Azure中的Windows虚拟机上运行的应用程序。设置一切都相当轻松,我现在在云中有了一个基本的应用程序。但是,我无法找到舒适的工作流程。我希望能够将更改推送到虚拟机(就像我在*nix系统上使用git一样),但我不确定如何最好地做到这一点。 最佳答案 因此您可以使用VisualStudio与GithubforWindows一起开发。对于熟悉Linux的东西,您可能想尝试Cloud9IDE,它是一个浏览器中的IDE,还可以轻松连接到您的githu

c - 什么是 WINVER 0x501?没有它的 RegisterDeviceNotification 错误

我在代码中使用了RegisterDeviceNotificationAPI。如果我不使用#defineWINVER0x501,它就不起作用(出现链接器错误)。1)当我查看窗口Winuser.h时,RegisterDeviceNotificationA定义在#if(WINVER>=0x0500)下。这是什么原因?2)为了使RegisterDeviceNotificationA正常工作,我在自己的.h文件中声明了所有声明,但没有#if(WINVER>=0x0500)。这是正确的方法吗?3)我的另一个问题是在没有winver的情况下声明RegisterDeviceNotificationA有

c - Windows:防止 sleep 模式 - C 中的最小版本

我想在Windows下有一个最简单的C程序版本,它可以防止操作系统在运行时进入休眠模式或休眠模式。目前我有这个:#includeintmain(intargc,char**argv){while(1){SetThreadExecutionState(ES_CONTINUOUS|ES_SYSTEM_REQUIRED);Sleep(300*1000);/*wait300seconds*/}return0;}但是,这不起作用-如果我尝试使用OrwellDev-C++5.2.0.3编译它,我会收到此错误:[链接器错误]C:\Users\bachmann\AppData\Local\Temp\c

c - 确定 C 中 RegQueryValueEx 所需的缓冲区大小

是否有具体的方法来确定C中RegQueryValueEx的REG_BINARY值所需的确切缓冲区大小?如果可能,请提供代码演示方法。 最佳答案 执行winAPI双重调用舞蹈,它适用于除Reg函数之外的众多winAPI:调用RegQueryValueEx一次,将NULL作为lpData传递,并传递指向lpcpData的指针,args5和6。该函数将返回ERROR_SUCCESS并填充lpcpData具有所需的缓冲区大小。使用该大小的缓冲区再次调用。您也可以从传递缓冲区开始,如果它太小,函数将返回ERROR_MORE_DATA并用所需的

c - 在事件中 sleep

我有一个多线程程序,其中我无条件地在一个线程(线程A)中休眠无限时间。当另一个线程(ThreadB)中发生事件时,它通过发信号唤醒Thread-A。现在我知道有多种方法可以做到这一点。当我的程序在windows环境下运行时,我在Thread-A中使用WaitForSingleObject,在Thread-B中使用SetEvent。它工作正常。我还可以使用基于文件描述符的模型进行轮询、选择。有不止一种方法可以做到这一点。但是,我试图找到最有效的方法。我想在Thread-B发出信号时尽快唤醒Thread-A。你认为什么是最好的选择。我可以探索基于驱动程序的选项。谢谢

c - 等同于 Windows 上的 PTHREAD_MUTEX_INITIALIZER?

是否可以静态初始化CRITICAL_SECTION,如pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER?换句话说,是否可以在C语言中初始化库中的全局CRITICAL_SECTION而不必弄乱DllMain等? 最佳答案 是的,只需在DLL_PROCESS_ATTACH中初始化并在DLL_PROCESS_DETACH中删除CRITICAL_SECTIONg_cs={0};BOOLWINAPIDllMain(HINSTANCEhinstDLL,//handletoDLLmoduleDWORDf

c - 如何在 C 中调试 Windows 服务启动代码,而不是 C#

大家我想知道如何在C中调试Windows服务启动代码。有几个这样的问题,但在C#中,但它们不是我需要的。到目前为止,我只能附加到进程进行调试。现在我想调试main()函数,怎么办?越详细越好。非常感谢。我的代码如下。主要功能:voidmain(){SERVICE_TABLE_ENTRYServiceTable[2];ServiceTable[0].lpServiceName="MemoryStatus";ServiceTable[0].lpServiceProc=(LPSERVICE_MAIN_FUNCTION)ServiceMain;//ServiceMainServiceTable